This application relates to digital signal processing based on the wavelet transform, and more specifically, to techniques for performing a discrete wavelet transform using filterbank factorizations.
Wavelet transforms are developed as an alternative to various Fourier transforms to analyze and extract components of a signal, especially when the spectral composition of the signal changes with time as is the case for certain imaging signals. For example, a time-varying signal can be analyzed by a wavelet transform to decompose the signal into various spectral components and their dependence with time. A wavelet transform uses a wavelet as a window filter with a varying scale and a varying wavelet translation in time to correlate with the time-varying signal. This correlation can obtain the spectral information at multiple different spectral resolutions and the position information of different spectral components in time.
The discrete wavelet transform (xe2x80x9cDWTxe2x80x9d) uses a bank of digital filters with different cutoff frequencies to analyze sequential samples of a time-varying signal at different scales. The filters may include a set of high-pass filters to analyze high-frequency components and a set of low-pass filters to analyze low-frequency components. This allows the multi-resolution analysis. Upsampling and downsampling can be used to change the scale in the discrete wavelet transform. Interpolation filters and decimation filters may be used for these purposes. The discrete wavelet transform is a powerful tool for multiscale time-frequency signal decomposition and analysis. This technique can be used in many applications, such as signal processing, digital communications, numerical analysis, and computer graphics.
The system design for implementing the discrete wavelet transform may be limited by a number of practical considerations, such as the available buffer size, processing delay, processing power, chip area, and the impact of the control complexity. In general, two different types of system architectures, namely, sequential and parallel architectures, may be used for the discrete wavelet transform.
The sequential architecture may be implemented to compute the DWT by splitting an input signal into sequential blocks in time. A processor such as a microprocessor or other computer processors may be used to operate on one block at a time to process the different blocks at different times [7], [12], [22]. The sequential architecture may be used when there is only a limited amount of memory available for the transform computation. Exemplary scenarios include image compression/decompression systems using a DSP/ASIC chip in consumer electronics products (e.g., digital cameras) or space-borne instruments [12], [22], [23]. It is desirable in these applications to limit the memory buffer size of the system. This can not only keep the cost low but also reduce the chip design area to achieve a compact volume of the final product.
Alternatively, one implementation of a parallel architecture splits the input into blocks among several processors so that the processors operate on different blocks at the same time. [11], [24], [10], [21], [16]. This can speed up the transform computation for applications where a large volume of data has to be processed in a reasonably short time. For instance, seismic data processing [21] or illumination computations in computer graphics [17] are potential applications. Fast DWT computation to meet stringent delay constraints can be critical to the success of any wavelet-based techniques.
The present DWT techniques include a method for performing DWT computation on an input signal. The input signal is partitioned into consecutive blocks of samples. A multilevel filtering operation is then performed on a first block by using a discrete wavelet transform algorithm, without using information from a second adjacent block.
Computations of the multilevel filtering operation that are computable based on information solely from the first block are completed and then partially completed results from some samples in the first block are saved. The multilevel filtering operation cannot be completed on these samples in the first block without specified input from the second adjacent block.
After the above operations within the first block, the specified input from the second adjacent block is then used to complete the multilevel filtering operation on the samples with the partially completed results in the first block.